<!doctype html>
<html xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <title>葡萄藤PPT</title>

    <link rel="stylesheet" href="../css/reveal/reveal.css">

    <!-- PPT主题，可以在/css/reveal/theme/中选择其他主题，目前暂时只能使用该模板 -->
    <link rel="stylesheet" href="../css/reveal/theme/ptt.css">

    <!-- syntax highlighting 代码高亮主题 -->
    <link rel="stylesheet" href="../lib/reveal/css/zenburn.css">

    <!-- 打印和PDF输出样式 -->
    <script>
        var link = document.createElement('link');
        link.rel = 'stylesheet';
        link.type = 'text/css';
        link.href = window.location.search.match(/print-pdf/gi) ? '../css/reveal/print/pdf.css' : '../css/reveal/print/paper.css';
        document.getElementsByTagName('head')[0].appendChild(link);
    </script>
</head>
<body>
<img src="../img/demo/logo.png" alt="" usemap="#pttmap" class="base-logo">
<map name="pttmap">
    <area shape="rect" coords="0,0,276,58" href="http://www.jnshu.com" alt="" target="_blank"/>
</map>
<div class="reveal">
    <div class="slides">
        <section>
            <h3>【JS-08】angular js常用指令 ng-blur、ng-change、ng-focus、ng-disabled是如何运用到表单验证中的？</h3>
            <p>分享人：梁耀</p>
        </section>
        <section>
            <p>目录</p>
            <p>1.背景介绍</p>
            <p>2.知识剖析</p>
            <p>3.常见问题</p>
            <p>4.解决方案</p>
            <p>5.编码实战</p>
            <p>6.扩展思考</p>
            <p>7.参考文献</p>
            <p>8.更多讨论</p>
        </section>
        <section>
            <h3>1.背景介绍</h3>
        </section>
        <section>
            <section>
                <p>我们在获取用户输入值的时候，有一个必要的环节就是进行表单验证，javascript有一些好用的
                    表单验证功能，但是也存在一些问题，比如进行简单的事件监听往往需要写大量的获取数据以及
                    数据呈现的代码</p>
            </section>

            <section>
                <p>angular在数据获取、动态绑定、页面呈现等方面有很大的优势，可以将大量繁多的代码
                    进行简化，在表单验证方面，angular也有其特殊的优势</p>
            </section>


        </section>

        <section>
            <h3>2.知识剖析</h3>
        </section>
        <section>
            <section>
                <h4>ng-blur</h4>
                <p>ng-blur 指令用于告诉 AngularJS HTML 元素在失去焦点时需要执行的表达式</p>
                <p> AngularJS 中的 ng-blur 指令不会覆盖原生的 onblur 事件， 如果触发该事件，
                    ng-blur 表达式与原生的 onblur 事件都会执行。
                </p>
            </section>
            <section>
                <h4>ng-focus</h4>
                <p> ng-focus 指令用于告诉 AngularJS 在 HTML 元素获取焦点时需要执行的操作</p>
                <p>ng-focus 指令不会覆盖元素的原始 onfocus 事件, 事件触发时，ng-focus
                    表达式与原始的 onfocus 事件将都会执行。
                </p>
            </section>
            <section>
                <h4>ng-change</h4>
                <p>
                    ng-change 指令用于告诉 AngularJS 在 HTML 元素值改变时需要执行的操作。
                </p>
                <p>
                    ng-change 指令需要搭配 ng-model 指令使用。
                </p>
                <p>
                    ng-change 事件在值的每次改变时触发，它不需要等待一个完成的修改过程，或等待失去焦点的动作。
                </p>
                <p>
                    ng-change 事件只针对输入框值的真实修改，而不是通过 JavaScript 来修改。
                </p>
            </section>
            <section>
                <h4>ng-disable</h4>
                <p> ng-disabled 指令设置表单输入字段的 disabled 属性(input, select, 或 textarea)。
                    如果 ng-disabled 中的表达式返回 true 则表单字段将被禁用。</p>

            </section>





        </section>
        <section>
            <h3>3.常见问题</h3>
            <p>如何使用pattern自定义表单验证？</p>
        </section>
        <section>
            <section>
                <h3>4.解决方案</h3>
                <p>pattern 属性仅适用于 input 元素。它允许我们利用 正则表达式 (RegEx) 制定自己的验证规范验证输入值。
                    同样的，如果输入值与指定的模式不匹配，将会抛出错误信息</p>
            </section>
        </section>
        <section>
            <h3>5.编码实战</h3>
        </section>
        <section>
            <section>
                <h3>6.扩展思考</h3>

            </section>

        </section>
        <section>
            <h3>7.参考文献</h3>
        </section>
        <section style="text-align: left;font-size: 25px">
            <p>参考一 :
                <a href="http://www.runoob.com/angularjs/ng-ng-blur.html"> 菜鸟联盟</a> </p>
            <p>参考二：
                <a href="https://www.tuicool.com/articles/RjQZzm">pattern--HTML5的表单验证属性</a>

            </p>

        </section>
        <section>
            <section>
                <h3>8.更多讨论</h3>

            </section>

        </section>
        <section>
            <h4>鸣谢</h4>
            <p>感谢大家观看</p>
        </section>

    </div>
</div>

<script src="../lib/reveal/js/head.min.js"></script>
<script src="../lib/reveal/reveal.js"></script>

<script>

    // 以下为常见配置属性的默认值
    // {
    // 	controls: true, // 是否在右下角展示控制条
    // 	progress: true, // 是否显示演示的进度条
    // 	slideNumber: false, // 是否显示当前幻灯片的页数编号，也可以使用代码slideNumber: 'c / t' ，表示当前页/总页数。
    // 	history: false, // 是否将每个幻灯片改变加入到浏览器的历史记录中去
    // 	keyboard: true, // 是否启用键盘快捷键来导航
    // 	overview: true, // 是否启用幻灯片的概览模式，可使用"Esc"或"o"键来切换概览模式
    // 	center: true, // 是否将幻灯片垂直居中
    // 	touch: true, // 是否在触屏设备上启用触摸滑动切换
    // 	loop: false, // 是否循环演示
    // 	rtl: false, // 是否将演示的方向变成RTL，即从右往左
    // 	fragments: true, // 全局开启和关闭碎片。
    // 	autoSlide: 0, // 两个幻灯片之间自动切换的时间间隔（毫秒），当设置成 0 的时候则禁止自动切换，该值可以被幻灯片上的 ` data-autoslide` 属性覆盖
    // 	transition: 'default', // 切换过渡效果，有none/fade/slide/convex/concave/zoom
    // 	transitionSpeed: 'default', // 过渡速度，default/fast/slow
    // 	mouseWheel: true, //是否启用通过鼠标滚轮来切换幻灯片
    // }

    // 初始化幻灯片
    Reveal.initialize({
        history: true,
        dependencies: [
            {src: '../plugin/markdown/marked.js'},
            {src: '../plugin/markdown/markdown.js'},
            {src: '../plugin/notes/notes.js', async: true},
            {
                src: '../plugin/highlight/highlight.js',
                async: true,
                callback: function () {
                    hljs.initHighlightingOnLoad();
                }
            }
        ]
    });
</script>
</body>
</html>
